nginx配置防盗链

        防盗链也可以和配置静态文件过期时间一样,和指定文件类型不记录配置在一起。

1
2
3
4
5
6
7
8
9
10
11
12
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|doc|pdf|gz|bz2|xls)$
{
expires 30d;
access_log off;
valid_referers none blocked server_name *.123.com *.234.com *.baidu.com;
if ($invalid_referer)
{
#deny all;
return 403;
rewrite ^/ http://www.example.com/nophoto.gif;
}
}

        valid_referers none blocked server_name 表示对这些域名的网站不进行盗链。

        然后 if ,可以 deny all 也可以 return 403,然后 rewrite 到一个403的固定网页。这样盗链文件的人访问这些文件时就会跳到 http://www.example.com/nophoto.gif 这里。当然也可以直接显示 403,即 return 403; 着两种方式 return 403 更节省资源。

1
2
3
4
5
6
7
8
9
10
11
12
location ~ *^.+\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|doc|pdf|gz|bz2|xls)$
{
expires 30d;
valid_referers none blocked server_name *.123.com *.234.com *.baidu.com;
if ($invalid_referer)
{
#deny all;
return 403;
rewrite ^/ http://www.example.com/nophoto.gif;
}
access_log off;
}